Eventer
Simple and fast event emitter library. Subscription is based on a unique Token, which can be used to unsubscribe from the topic.
The Eventer is used in LightningChart® JS charting library. https://www.arction.com/
Installation
npm install --save @arction/eventer
Documentation
Online documentation is available at arction.github.io/eventer
Getting started
import { Eventer } from '@arction/eventer'
const eventer = new Eventer()
const token1 = eventer.on('topic1', () => console.log('I am called from topic1'))
const token2 = eventer.on('topic1', () => console.log('I am also called from topic1'))
eventer.on('topic2', () => console.log('I am called from topic2'))
eventer.emit('topic1')
eventer.emit('topic2')
eventer.off(token2)
eventer.emit('topic1')
eventer.allOff()
eventer.emit('topic2')
Subscribe to topic
Subscribing to a topic is easy.
eventer.on('topic', ()=>{ console.log('Topic handler') })
Multiple subscriptions to a single topic can exist.
eventer.on('topic', ()=>{ console.log('Topic handler') })
eventer.on('topic2', ()=>{ console.log('Topic 2 handler') })
eventer.on('topic3', ()=>{ console.log('Topic 3 handler') })
Unsubscribe from topic
You can unsubscribe from a single topic by using the Token returned by eventer when you subscribed to the topic.
const token = eventer.on('topic', ()=>{ console.log('Topic handler') })
eventer.off(token)
You can also unsubscibe all listeners from a topic.
eventer.topicOff('topic')
It is also possible to unsubscribe all topics and all listeners.
eventer.allOff()
Emiting events
Events can be emitted for a topic. The emit can contain 0 or more arguments that will be provided to the topic listeners.
eventer.emit('topic')
eventer.on('topic2', ( arg1, arg2 ) => console.log( arg1, arg2 ))
eventer.emit('topic2', 'Hello ', 'World')
Development instructions
The project is developed using TypeScript. Build system of the project heavily relies on Node.js. Dependencies are managed with npm, therefore, remember to run npm install before starting of anything else.
There are several npm scripts, which are used for development process:
Name | Command | Description |
---|
build | npm run build | run build system |
test | npm test | run tests and watch |
lint | npm run lint | run static analyzer and watch |
docs | npm run docs | generate typedoc documentation |
ci:test | npm run ci:test | run tests once |
ci:lint | npm run ci:lint | run static analyzer once |
ci:watch | npm run ci:watch | run CI circle and watch |